package backtype.storm.scheduler;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

public class Topologies {
	Map<String, TopologyDetails> topologies;
	Map<String, String> nameToId;

	public Topologies(Map<String, TopologyDetails> topologies) {
		if (topologies == null)
			topologies = new HashMap();
		this.topologies = new HashMap<String, TopologyDetails>(
				topologies.size());
		this.topologies.putAll(topologies);
		this.nameToId = new HashMap<String, String>(topologies.size());

		for (String topologyId : topologies.keySet()) {
			TopologyDetails topology = topologies.get(topologyId);
			this.nameToId.put(topology.getName(), topologyId);
		}
	}

	public TopologyDetails getById(String topologyId) {
		return this.topologies.get(topologyId);
	}

	public TopologyDetails getByName(String topologyName) {
		String topologyId = this.nameToId.get(topologyName);

		if (topologyId == null) {
			return null;
		} else {
			return this.getById(topologyId);
		}
	}

	public Collection<TopologyDetails> getTopologies() {
		return this.topologies.values();
	}
}
